/**
 * Created by zdx  on 2016/8/26.
 *
 *
 */

define(['controller', "gdMap", "googleMap"], function (c) {
    var aMap = require("gdMap");
    var googleMap = require("googleMap");

    return {
        initMap: function (op) {
            if (typeof AMap != "undefined") {
                return new aMap(op);
            } else if (typeof(google) != "undefined") {
                return new googleMap(op);
            }
        },
        getElevationForLocations:function (locations,callback){
            var elevation = new google.maps.ElevationService();
            elevation.getElevationForLocations({
                locations:[new google.maps.LatLng(locations.lat,locations.lng)]
            },function (result,state) {
                var height=result[0].elevation.toFixed(2);
                callback(height);
            });
        },

        /* 计算角度 */
        rotate: function (before, after) {
            var e = after.lng - before.lng;
            var n = after.lat - before.lat;
            return Math.atan2(e, n) * (180 / Math.PI);
            //$('#' + id).css('transform', 'rotate(' + deg + 'deg)');
        },
        /* 根据某一个point来显示info */
        get_popup_txt: function (pos) {
            return "<div class='my-infoWindow'><b class='targetInfo " + pos.id + "'>" + pos.id + "</b><br>纬度: " + this.changeLatToDMS(pos.lat) + "<br>经度: " + this.changeLngToDMS(pos.lng) + "<br>高度: " + pos.height + "<br>航速: " + pos.speed + "<br>航向: " + pos.course+'</div>';
        },
        /* 根据某一个point的params来显示info */
        get_popup_txt_params: function (id, lng, lat, height, speed, course) {
            return "<b class='targetInfo " + id + "'>" + id + "</b><br>纬度: " + this.changeLatToDMS(lat) + "<br>经度: " + this.changeLngToDMS(lng) + "<br>高度: " + height + "<br>航速: " + speed + "<br>航向: " + course;
        },
        /* 把纬度从浮点转换成度分秒 */
        changeLatToDMS: function (val) {
            var NS = 'N';
            if (val < 0) {
                NS = 'S';
                val = 0 - val;
            }
            var d = parseInt(val);
            var m = parseInt((val - d) * 60);
            var s = (((val - d) * 60 - m) * 60).toFixed(2);
            return NS + d + '°' + m + "'" + s + '"';
        },
        /* 把纬度从度分秒转换成浮点 */
        changeDMSToLat: function (val) {
            var NS = val.match(/^\w/)[0];
            var lng = val.match(/\d+/g);
            if (lng && lng.length > 0) {
                var lngFloat = 0;
                if (lng[0]) {
                    lngFloat = parseInt(lng[0]);
                }
                if (lng[1]) {
                    lngFloat += parseFloat(lng[1]) / 60;
                }
                if (lng[2] && lng[3]) {
                    lngFloat += parseFloat(lng[2] + '.' + lng[3]) / 3600;
                } else if (lng[2]) {
                    lngFloat += parseFloat(lng[2]) / 3600;
                }
                if (NS.toUpperCase() == 'N') {
                    return lngFloat;
                } else {
                    return 0 - lngFloat;
                }
            }
        },
        /* 把经度从浮点转换成度分秒 */
        changeLngToDMS : function(val) {
            var EW = 'E';
            if(val<0){
                EW = 'W';
                val = 0 - val;
            }
            var d = parseInt(val);
            var m = parseInt((val-d)*60);
            var s = (((val-d)*60 - m)*60).toFixed(2);
            return EW + d+'°'+m+"'"+s+'"';
        },
    /* 把经度从度分秒转换成浮点 */
     changeDMSToLng : function(val) {
        var EW = val.match(/^\w/)[0];
        var lng = val.match(/\d+/g);
        if(lng && lng.length > 0){
            var lngFloat = 0;
            if(lng[0]){
                lngFloat = parseInt(lng[0]);
            }
            if(lng[1]){
                lngFloat += parseFloat(lng[1])/60;
            }
            if(lng[2] && lng[3]){
                lngFloat += parseFloat(lng[2] + '.' + lng[3])/3600;
            }else if(lng[2]){
                lngFloat += parseFloat(lng[2])/3600;
            }
            if(EW.toUpperCase() == 'E'){
                return lngFloat;
            }else{
                return 0 - lngFloat;
            }
        }
    }

}
});